//1、安装mongoose     npm i mongoose
//2、导入mongoose
const mongoose = require('mongoose');

//3、连接mongo服务
mongoose.connect("mongodb://127.0.0.1:27017/bilibili");

//4、设置回调  设置连接成功的回调
// mongoose.connection.on('open',()=>{
//     console.log("连接成功");
// });

mongoose.connection.once('open',()=>{

    //创建文档的结构对象
    //设置集合中文档的属性以及属性值的类型
    let schema = new mongoose.Schema({
        name:String,
        author:String,
        price:Number,
        //  test:mongoose.Schema.Types.Mixed
    });
    //创建文档对象  可以对文档进行增删改查的操作
    let model = mongoose.model('books',schema);

    //添加文档  还可以使用 insertMany 可以添加多个文档  model.insertMany([{},{},{}]).then().catch();
    /* model.create({
        name:'西游记',
        author:'吴承恩',
        price:20
    }).then((result)=>{
        console.log(result);

        //关闭数据库链接
        mongoose.disconnect();
        
    }).catch((err)=>{
        console.log(err);return;
    }) */
    //删除文档  还可以用deleteMany
 /*    model.deleteOne({_id:'65589baa646c8d72f845b7bc'}).then((result)=>{
        console.log(result);

        //关闭数据库链接
        mongoose.disconnect();
        
    }).catch((err)=>{
        console.log(err);return;
    }) */

    //更新文档 还可以用updateMany
    /* model.updateOne({_id:'65589baa646c8d72f845b7bb'},{price:100}).then((result)=>{
        console.log(result);

        //关闭数据库链接
        mongoose.disconnect();
        
    }).catch((err)=>{
        console.log(err);return;
    }) */

    //读取文档 findOne  findById  find
    /* model.findOne({price:50}).then((result)=>{
        console.log(result);

        //关闭数据库链接
        mongoose.disconnect();
        
    }).catch((err)=>{
        console.log(err);return;
    }) */

    model.find().select({name:1,age:1}).then((result)=>{
        console.log(result);

        //关闭数据库链接
        mongoose.disconnect();
        
    }).catch((err)=>{
        console.log(err);return;
    })


    console.log("连接成功");
});

//设置连接错误的回调
mongoose.connection.on('error',()=>{
    console.log("连接失败");
});

//设置连接关闭的回调
mongoose.connection.on('close',()=>{
    console.log("连接关闭");
});